package com.qujia.coupon.mapper;

import com.qujia.coupon.domain.CouponDeduction;
import com.qujia.coupon.domain.CouponUser;
import com.qujia.coupon.domain.CouponUserGiveCount;
import com.qujia.coupon.domain.vo.CouponUserSumVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 人员的优惠卷查询接口
 * 
 * @author qujia
 * @date 2021-08-09
 */
@Repository
public interface CouponUserMapper
{
    /**
     * 查询人员优惠卷
     *
     * @param id 人员优惠卷id
     * @return 人员优惠卷信息
     */
    public CouponUser selectCouponUserById(Integer id);




    int selectUserIssueGiveCount(Map<String, String> paramMap);
    /**
     * 查询人员优惠卷
     * 
     * @param couponUser 人员优惠卷信息
     * @return 人员优惠卷信息集合
     */
    public List<CouponUser> selectCouponUserList(CouponUser  couponUser);

    public CouponUserSumVo selectCouponUserSum(CouponUser  couponUser);

    public List<Long> selectEnterPriseIdList(Long authorId);


        // 逻辑删除优惠券用户
        void logicDeleteCouponUser(Integer id);

    // 批量逻辑删除优惠券用户
    void batchLogicDeleteCouponUser(List<Integer> ids);

    /***
     * 用户进入领取页面的次数
     * @param couponUserGiveCount
     * @return
     */
    CouponUserGiveCount selectCouponUserGiveCount(CouponUserGiveCount couponUserGiveCount);

    /**
     * 批量保存用户优惠券
     * @param couponUsersList
     * @return
     */
    int saveBatchCouponUser(@Param("couponUsersList") List<CouponUser> couponUsersList);
    /**
     * 批量更新优惠券模板领取数量
     * @param couponDeduction
     * @return
     */
    int updateBatchCouponTemplate(CouponDeduction couponDeduction);
    /**
     * 新增用户进入该领取方式次数信息
     * @param couponUserGiveCount
     */
    int insertCouponUserGiveCount(CouponUserGiveCount couponUserGiveCount);
    /**
     * 更新用户进入领取页面的次数
     * @param couponUserGiveCount
     */
    int updateCouponUserGiveCount(CouponUserGiveCount couponUserGiveCount);
    /**
     * 新增人员优惠卷
     * 
     * @param couponUser 人员优惠卷信息
     * @return 结果
     */
    public int insertCouponUser(CouponUser couponUser);

    /**
     * 修改人员优惠卷
     * 
     * @param couponUser 人员优惠卷
     * @return 结果
     */
    public int updateCouponUser(CouponUser couponUser);

    /**
     * 删除人员优惠卷
     * 
     * @param id 人员优惠劵ID
     * @return 结果
     */
    public int deleteCouponUserById(Integer id);

    /**
     * 批量删除人员优惠卷
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteCouponUserByIds(String[] ids);

    int deleteCouponUserByIdList(@Param("ids") List<String> ids);

    List<CouponUser> selectUsefulCoupon(CouponUser couponUser);

    int deleteUserGiveCountByPhoneAndIssueId(@Param("mobilePhone") String mobilePhone,@Param("issueId") String issueId);

    List<CouponUser> queryList(CouponUser couponUser);

    int incrCouponUserGiveCount(@Param("mobilePhone") String mobilePhone, @Param("issueId") String issueId, @Param("incr") int incr);
}
